home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / asm-m32r / io.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  5.4 KB  |  201 lines

  1. #ifndef _ASM_M32R_IO_H
  2. #define _ASM_M32R_IO_H
  3.  
  4. #include <linux/string.h>
  5. #include <linux/compiler.h>
  6. #include <asm/page.h>  /* __va */
  7.  
  8. #ifdef __KERNEL__
  9.  
  10. #define IO_SPACE_LIMIT  0xFFFFFFFF
  11.  
  12. /**
  13.  *    virt_to_phys    -    map virtual addresses to physical
  14.  *    @address: address to remap
  15.  *
  16.  *    The returned physical address is the physical (CPU) mapping for
  17.  *    the memory address given. It is only valid to use this function on
  18.  *    addresses directly mapped or allocated via kmalloc.
  19.  *
  20.  *    This function does not give bus mappings for DMA transfers. In
  21.  *    almost all conceivable cases a device driver should not be using
  22.  *    this function
  23.  */
  24.  
  25. static inline unsigned long virt_to_phys(volatile void * address)
  26. {
  27.     return __pa(address);
  28. }
  29.  
  30. /**
  31.  *    phys_to_virt    -    map physical address to virtual
  32.  *    @address: address to remap
  33.  *
  34.  *    The returned virtual address is a current CPU mapping for
  35.  *    the memory address given. It is only valid to use this function on
  36.  *    addresses that have a kernel mapping
  37.  *
  38.  *    This function does not handle bus mappings for DMA transfers. In
  39.  *    almost all conceivable cases a device driver should not be using
  40.  *    this function
  41.  */
  42.  
  43. static inline void *phys_to_virt(unsigned long address)
  44. {
  45.     return __va(address);
  46. }
  47.  
  48. extern void __iomem *
  49. __ioremap(unsigned long offset, unsigned long size, unsigned long flags);
  50.  
  51. /**
  52.  *    ioremap        -    map bus memory into CPU space
  53.  *    @offset:    bus address of the memory
  54.  *    @size:        size of the resource to map
  55.  *
  56.  *    ioremap performs a platform specific sequence of operations to
  57.  *    make bus memory CPU accessible via the readb/readw/readl/writeb/
  58.  *    writew/writel functions and the other mmio helpers. The returned
  59.  *    address is not guaranteed to be usable directly as a virtual
  60.  *    address.
  61.  */
  62.  
  63. static inline void __iomem *ioremap(unsigned long offset, unsigned long size)
  64. {
  65.     return __ioremap(offset, size, 0);
  66. }
  67.  
  68. extern void iounmap(volatile void __iomem *addr);
  69. #define ioremap_nocache(off,size) ioremap(off,size)
  70.  
  71. /*
  72.  * IO bus memory addresses are also 1:1 with the physical address
  73.  */
  74. #define page_to_phys(page)    (page_to_pfn(page) << PAGE_SHIFT)
  75. #define page_to_bus    page_to_phys
  76. #define virt_to_bus    virt_to_phys
  77.  
  78. extern unsigned char _inb(unsigned long);
  79. extern unsigned short _inw(unsigned long);
  80. extern unsigned long _inl(unsigned long);
  81. extern unsigned char _inb_p(unsigned long);
  82. extern unsigned short _inw_p(unsigned long);
  83. extern unsigned long _inl_p(unsigned long);
  84. extern void _outb(unsigned char, unsigned long);
  85. extern void _outw(unsigned short, unsigned long);
  86. extern void _outl(unsigned long, unsigned long);
  87. extern void _outb_p(unsigned char, unsigned long);
  88. extern void _outw_p(unsigned short, unsigned long);
  89. extern void _outl_p(unsigned long, unsigned long);
  90. extern void _insb(unsigned int, void *, unsigned long);
  91. extern void _insw(unsigned int, void *, unsigned long);
  92. extern void _insl(unsigned int, void *, unsigned long);
  93. extern void _outsb(unsigned int, const void *, unsigned long);
  94. extern void _outsw(unsigned int, const void *, unsigned long);
  95. extern void _outsl(unsigned int, const void *, unsigned long);
  96.  
  97. static inline unsigned char _readb(unsigned long addr)
  98. {
  99.     return *(volatile unsigned char __force *)addr;
  100. }
  101.  
  102. static inline unsigned short _readw(unsigned long addr)
  103. {
  104.     return *(volatile unsigned short __force *)addr;
  105. }
  106.  
  107. static inline unsigned long _readl(unsigned long addr)
  108. {
  109.     return *(volatile unsigned long __force *)addr;
  110. }
  111.  
  112. static inline void _writeb(unsigned char b, unsigned long addr)
  113. {
  114.     *(volatile unsigned char __force *)addr = b;
  115. }
  116.  
  117. static inline void _writew(unsigned short w, unsigned long addr)
  118. {
  119.     *(volatile unsigned short __force *)addr = w;
  120. }
  121.  
  122. static inline void _writel(unsigned long l, unsigned long addr)
  123. {
  124.     *(volatile unsigned long __force *)addr = l;
  125. }
  126.  
  127. #define inb     _inb
  128. #define inw     _inw
  129. #define inl     _inl
  130. #define outb    _outb
  131. #define outw    _outw
  132. #define outl    _outl
  133.  
  134. #define inb_p   _inb_p
  135. #define inw_p   _inw_p
  136. #define inl_p   _inl_p
  137. #define outb_p  _outb_p
  138. #define outw_p  _outw_p
  139. #define outl_p  _outl_p
  140.  
  141. #define insb    _insb
  142. #define insw    _insw
  143. #define insl    _insl
  144. #define outsb   _outsb
  145. #define outsw   _outsw
  146. #define outsl   _outsl
  147.  
  148. #define readb(addr)   _readb((unsigned long)(addr))
  149. #define readw(addr)   _readw((unsigned long)(addr))
  150. #define readl(addr)   _readl((unsigned long)(addr))
  151. #define __raw_readb readb
  152. #define __raw_readw readw
  153. #define __raw_readl readl
  154. #define readb_relaxed readb
  155. #define readw_relaxed readw
  156. #define readl_relaxed readl
  157.  
  158. #define writeb(val, addr)  _writeb((val), (unsigned long)(addr))
  159. #define writew(val, addr)  _writew((val), (unsigned long)(addr))
  160. #define writel(val, addr)  _writel((val), (unsigned long)(addr))
  161. #define __raw_writeb writeb
  162. #define __raw_writew writew
  163. #define __raw_writel writel
  164.  
  165. #define mmiowb()
  166.  
  167. #define flush_write_buffers() do { } while (0)  /* M32R_FIXME */
  168.  
  169. static inline void
  170. memset_io(volatile void __iomem *addr, unsigned char val, int count)
  171. {
  172.     memset((void __force *) addr, val, count);
  173. }
  174.  
  175. static inline void
  176. memcpy_fromio(void *dst, volatile void __iomem *src, int count)
  177. {
  178.     memcpy(dst, (void __force *) src, count);
  179. }
  180.  
  181. static inline void
  182. memcpy_toio(volatile void __iomem *dst, const void *src, int count)
  183. {
  184.     memcpy((void __force *) dst, src, count);
  185. }
  186.  
  187. /*
  188.  * Convert a physical pointer to a virtual kernel pointer for /dev/mem
  189.  * access
  190.  */
  191. #define xlate_dev_mem_ptr(p)    __va(p)
  192.  
  193. /*
  194.  * Convert a virtual cached pointer to an uncached pointer
  195.  */
  196. #define xlate_dev_kmem_ptr(p)    p
  197.  
  198. #endif  /* __KERNEL__ */
  199.  
  200. #endif  /* _ASM_M32R_IO_H */
  201.